
/**
 * 类型推断
 * 从右向左
 */

let a = 1
let b = [1]

let c = (x = 1) => x + 1

/**
 * 类型推断
 * 从左向右 （根据上下文）
 * 
 * 运行时会出现的错误提示
 * ERROR TS7006: Parameter '_event' implicitly has an 'any' type.
 */

// window.onkeydown = (_event) => {}

/**
 * 类型断言
 */

interface Foo {
    bar: number
}
let foo = {} as Foo
foo.bar = 1

/**
 * 以上使用`as`的方式，不会提示是否缺失定义`bar`属性，
 * 最好的方式是使用下面代码，在定义时就指明类型
 * 
 * Property 'bar' is missing in type '{}' but required in type 'Foo'.
 */

let foo02 : Foo = {
    bar: 1
}





